#!/usr/bin/env ruby
# frozen_string_literal: true

require 'optparse'
require_relative '../lib/git'

def write_config
  # 显示中文目录
  git.config 'core.quotepath', 'false', '--global'

  # 设置记住密码在内存，一周内不失效
  git.config 'credential.helper', 'cache --timeout=604800', '--global'

  # 设置默认的分支名
  git.config 'init.defaultBranch', 'master', '--global'

  # 设置全局用户名和邮箱
  print '输入全局的用户名和邮箱，格式 "Name<Email-Address>"，不愿输入请跳过：'
  user = parse_user_name_and_email(gets)
  if user
    git.config 'user.name', user[:name], '--global'
    git.config 'user.email', user[:email], '--global'
  end

  # 在工作目录设置不同的用户名和邮箱
  print '输入工作用用户名和邮箱，格式 "Name<Email-Address>"，不愿输入请跳过：'
  user = parse_user_name_and_email(gets)
  if user
    git.config 'includeIf."gitdir:~/workspace/work".path', '~/.work.gitconfig', '--global'
    git.config 'user.name', user[:name], '--file ~/.work.gitconfig'
    git.config 'user.email', user[:email], '--file ~/.work.gitconfig'
  end

  puts '已将配置代码写入到 `~/.gitconfig`，可查看。'
end

def parse_user_name_and_email(addr)
  if addr =~ /(.*)<(.*)>/
    name, email = [$1, $2].map(&:strip)
    { name: name, email: email }
  end
end

OptionParser.new do |opts|
  opts.banner = '最优 Git 配置'
end.parse!

write_config
